package za.org.jcicada.cfgmngr;


/**
 * Subject part of observer pattern for monitoring registration events. Observers
 * will be informed of all system registration events.
 * @author rcrida
 */
public interface ISystemSubject {

	/**
	 * Attach an observer to a list of systems.
	 * 
	 * Calls observer.responseAttach() with the result.
	 */
	void requestAttach(ISystemObserver observer);

	/**
	 * Detach an observer from a list of systems.
	 * 
	 * Calls observer.responseDetach() with the result.
	 */
	void requestDetach(ISystemObserver observer);

	/**
	 * Inform the subject that the observer has disconnected.
	 * 
	 * @param client
	 *            the client that is disconnecting
	 */
	void informDisconnect(ISystemObserver observer);

}
